Packvorschlag im Kundenauftrag bearbeiten

Mit diesem Coding bearbeiten Sie den Packvorschlag im Kundenauftrag. Die erzeugten HU-Nummern werden dem Auftrag durch den Belegfluss zugeordnet. Deswegen muss nach der Bearbeitung auch der Belegfluss des Auftrags angepasst werden.

Geben Sie bei diesem Programm die Nummer des Vertriebsbeleges an und Sie können den Packvorschlag bearbeiten.

Soll der Packvorschlag lediglich angezeigt werden, so muss dem Baustein HU_PACKING_SALES_PROPOSAL der Parameter IF_ANZEIGEMODUS = ‘A’ mitgegeben werden.

Coding

*&———————————————————————*
*& Report  ZSD_PACKVORSCHLAG_DEMO
*& Aufruf des Dialoges “Packvorschlag” zum Kundenauftrag
*&———————————————————————*

REPORT  zsd_hu_packvorschlag_demo.

TYPE-POOLS: vsep, vse.

*** Variablen
DATA:
  gs_vbak         TYPE vbak,
  gt_xvbap        TYPE vse_t_vbap,
  gt_yvbap        TYPE vse_t_vbap,

  gt_xvbpa        TYPE vsep_t_vbpa,

  gt_xvbkd        TYPE va_vbkdvb_t,

  gt_xvbfa        TYPE vse_t_vbfa,
  gt_yvbfa        TYPE vse_t_vbfa,
  gs_xvbfa        TYPE vbfavb,

  gt_xvbapf       TYPE vse_t_vbapf,

  gs_object       TYPE hum_object,

  gt_headers      TYPE hum_hu_header_t,
  gs_header       TYPE vekpvb,

  gt_items        TYPE hum_hu_item_t,
  gs_item         TYPE vepovb,

  gv_data_changed TYPE c,
  gv_fcode        TYPE syucomm.


*** Selektionsbild: Kundenauftrag
PARAMETERS: p_vbeln TYPE vbeln.


START-OF-SELECTION.

*** Auftragsdaten lesen
  SELECT SINGLE * FROM vbak INTO gs_vbak WHERE vbeln = p_vbeln.
  IF sy-subrc = 0.
*** Auftrag vorhanden: Sperren
    CALL FUNCTION ‘ENQUEUE_EVVBAKE’
      EXPORTING
        mode_vbak      = ‘E’
        vbeln          = p_vbeln
      EXCEPTIONS
        foreign_lock   = 1
        system_failure = 2
        OTHERS         = 3.
    IF sy-subrc <> 0.
*** Falls nicht gesperrt werden konnte: Info-Meldung
      MESSAGE ID sy-msgid TYPE ‘I’ NUMBER sy-msgno
              WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
    ELSE.
*** Beleg wird zurzeit nicht bearbeitet: Daten lesen
      SELECT * FROM vbkd INTO TABLE gt_xvbkd WHERE vbeln = p_vbeln.
      SELECT * FROM vbap INTO TABLE gt_xvbap WHERE vbeln = p_vbeln.
      SELECT * FROM vbfa INTO TABLE gt_xvbfa WHERE vbelv = p_vbeln
                                             AND vbtyp_n = ‘X’. “HU

*** Aufruf des Dialoges “Packvorschlag”
      CALL FUNCTION ‘HU_PACKING_SALES_PROPOSAL’
        EXPORTING
          if_anzeigemodus = ‘V’ “Ändern
          if_dunkel       = space
          if_profile      = ‘0012’
          is_vbak         = gs_vbak
          it_xvbap        = gt_xvbap[]
          it_xvbpa        = gt_xvbpa[]
          it_xvbkd        = gt_xvbkd[]
        IMPORTING
          ef_data_changed = gv_data_changed
          ef_fcode        = gv_fcode
        CHANGING
          ct_xvbfa        = gt_xvbfa[]
          ct_yvbfa        = gt_yvbfa[]
          ct_xvbapf       = gt_xvbapf[].

*** Rückmeldung aus “Packvorschlag”
      WRITE: / ‘Call_Packing: ‘,
             / ‘- Data changed: ‘, gv_data_changed COLOR COL_TOTAL,
             / ‘- Function code:’, gv_fcode        COLOR COL_TOTAL.

      IF gv_fcode = ‘SICH’.
*** Wenn gesichert werden soll, dies auch tun:
*** Belegfluss anreichern mit den HU’s

        CALL FUNCTION ‘RV_DOCUMENT_FLOW_UPDATE’
          EXPORTING
            f_struktur = ‘VBAP’
            f_vbeln    = p_vbeln
            f_test     = ‘ ‘
            f_check    = ‘X’
          TABLES
            fxtabl     = gt_xvbap
            fxvbfa     = gt_xvbfa
            fytabl     = gt_yvbap
            fyvbfa     = gt_yvbfa.
***HU-Daten sichern
        CALL FUNCTION ‘HU_PACKING_UPDATE’
          EXPORTING
            if_synchron = ‘X’.
      ENDIF.

*** Protokoll der HU’s im Kundenauftrag
      WRITE: / ‘Handling Units:’.
      LOOP AT gt_xvbfa INTO gs_xvbfa
                WHERE vbtyp_n = ‘X’
                  AND updkz <> ‘D’.
        WRITE: / gs_xvbfa-vbeln.
      ENDLOOP.
    ENDIF. “SELECT VBAK
  ENDIF. “ENQUEUE

Enno Wulff